<?
require_once  '../classes/ConnectionDB.php';
require_once  '../classes/TestDataManager.php';
require_once  '../classes/ClasseDataManager.php';
require_once  '../classes/TestStudentiDataManager.php';
require_once  '../classes/TestStudentiManager.php';

$connection =ConnectionDB::getInstance()->connectToDB();

$chiaveTest = $_POST["chiaveTest"];
$codiceStudente = $_POST["codiceStudente"];
$codiceTest = TestDataManager::getInstance()->getTestByKey($connection, $chiaveTest);

$test = TestDataManager::getInstance()->getTestByCodice($connection, $codiceTest);

if($codiceTest != null && TestStudentiDataManager::getInstance()->existTestForStudent($connection, $codiceTest, $chiaveTest, $codiceStudente))
{
    $studenteDetail = ClasseDataManager::getInstance()->getStudenteByCodice($connection, $codiceStudente);
    //$listaDomande = TestStudentiDataManager::getInstance()->getListaDomandeStudente($connection, $codiceStudente, $codiceTest, $chiaveTest);
    $listaDomandeTmp=TestStudentiDataManager::getInstance()->getSeedQuestion($connection, $codiceStudente, $codiceTest, $chiaveTest);
    $listaDomande = explode("-", $listaDomandeTmp);
    if(!isset ($_POST["downloaded"]) && TestStudentiManager::getInstance()->hasListaAttachments($connection, $listaDomande))
        header("Location:downloadAttachment.php?chiaveTest=". $chiaveTest ."&codiceStudente=". $codiceStudente. "&codiceTest=".$codiceTest);
}
else
{

    header("Location:login.php?err=1");
}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script src="../glassboxLatest/glassbox.2.0.0/javascripts/prototype.js" type="text/javascript"></script>
        <script src="../glassboxLatest/glassbox.2.0.0/javascripts/scriptaculous/effects.js" type="text/javascript"></script>
        <script src="../glassboxLatest/glassbox.2.0.0/javascripts/glassbox/glassbox.js" type="text/javascript"></script>

        <title>Test <?= $codiceTest ?> - <?= $studenteDetail->getNome() ?> <?= $studenteDetail->getCognome(); ?> </title>
        <style type="text/css">

            body{
                background : url(../images/sfondoHome.jpg)
            }

            #timeBoxContent{
                padding-top: 7%;
                padding-left: 5%;
                color: green;
            }

            #DomandeBoxContent
            {
                font-size: 19px;
            }

            #rispostaDomandaDiv
            {
                padding-top: 20%;

            }

            #rispostaDomandaDiv_content
            {
                color: red;
                font-size: 29px;
            }




        </style>
        <script>
            path_to_root_dir = "../glassboxLatest/glassbox.2.0.0/";
            var indiceDomanda=0;

            function mouseover(ind)
            {
                document.getElementById('domanda'+ind).style.color="blue";
            }
            function mouseout(ind)
            {
                document.getElementById('domanda'+ind).style.color="black";
            }
            function loadDomanda(ind)
            {
                var l,str="";
                document.getElementById('testoDomandaDiv').innerHTML=listaDomande[ind-1].testoDomanda;
                document.getElementById('testoDomanda'+ind).style.color='white';
                document.getElementById('testoDomanda'+ind).style.backgroundColor='#25549a';
                for(l=0;l<listaDomande.length;l++)
                    if((l+1)!=ind)
                {                   
                        document.getElementById('testoDomanda'+(l+1)).style.backgroundColor='white';
                        document.getElementById('testoDomanda'+(l+1)).style.color='black';
                }
                if(listaDomande[ind-1].tipologia=='1')
                {
                    var indiceDomanda = ind-1;
                    str="<table cellpadding='4'>";
                    if(risposteDate[indiceDomanda] == 'V')
                        str +="<tr><td style='font-size : 19px'>Vero</td><td><input type='checkbox' name='vero' id='vero'  onclick='javascript:segnaRisposta("+indiceDomanda+", \"V\");document.getElementById(\"falso\").checked=false;' checked/></td></tr>";
                    else
                        str +="<tr><td style='font-size : 19px'>Vero</td><td><input type='checkbox' name='vero' id='vero'  onclick='javascript:segnaRisposta("+indiceDomanda+", \"V\");document.getElementById(\"falso\").checked=false;'/></td></tr>";
                    if(risposteDate[indiceDomanda] == 'F')
                        str +="<tr><td style='font-size : 19px'>Falso</td><td><input type='checkbox' name='falso' id='falso'onclick='javascript:segnaRisposta("+indiceDomanda+", \"F\");document.getElementById(\"vero\").checked=false;' checked/></td></tr>";
                    else
                        str +="<tr><td style='font-size : 19px'>Falso</td><td><input type='checkbox' name='falso' id='falso'onclick='javascript:segnaRisposta("+indiceDomanda+", \"F\");document.getElementById(\"vero\").checked=false;'/></td></tr>";
                    str +="</table>";
                    document.getElementById('rispostaDomandaDiv').innerHTML=str;
                    document.getElementById('risMult').innerHTML="";

                }
                else
                {


                    var indiceDomanda = ind-1;
                    str="<div id='risMult'><table cellpadding='4'>";

                    str += "<tr>";
                    if(risposteDate[indiceDomanda] == 1)
                        str += "<td><input type='checkbox' id='1alternativaCorretta' name='1alternativaCorretta' onclick='javascript:segnaRisposta("+indiceDomanda+", 1);document.getElementById(\"2alternativaCorretta\").checked=false; document.getElementById(\"3alternativaCorretta\").checked=false; document.getElementById(\"4alternativaCorretta\").checked=false;' value='"+listaDomande[ind-1].alternativa1+"' checked>"+listaDomande[ind-1].alternativa1+"</input></td>";
                    else
                        str += "<td><input type='checkbox' id='1alternativaCorretta' name='1alternativaCorretta' onclick='javascript:segnaRisposta("+indiceDomanda+", 1);document.getElementById(\"2alternativaCorretta\").checked=false; document.getElementById(\"3alternativaCorretta\").checked=false; document.getElementById(\"4alternativaCorretta\").checked=false;' value='"+listaDomande[ind-1].alternativa1+"' >"+listaDomande[ind-1].alternativa1+"</input></td>";
                    str += "</tr>";
                    str += "<tr>";
                    if(risposteDate[indiceDomanda] == 2)
                        str += "<td><input type='checkbox' id='2alternativaCorretta' name='2alternativaCorretta' onclick='javascript:segnaRisposta("+indiceDomanda+", 2);document.getElementById(\"1alternativaCorretta\").checked=false; document.getElementById(\"3alternativaCorretta\").checked=false; document.getElementById(\"4alternativaCorretta\").checked=false;' value='"+listaDomande[ind-1].alternativa2+"' checked >"+listaDomande[ind-1].alternativa2+"</input></td>";
                    else
                        str += "<td><input type='checkbox' id='2alternativaCorretta' name='2alternativaCorretta' onclick='javascript:segnaRisposta("+indiceDomanda+", 2);document.getElementById(\"1alternativaCorretta\").checked=false; document.getElementById(\"3alternativaCorretta\").checked=false; document.getElementById(\"4alternativaCorretta\").checked=false;' value='"+listaDomande[ind-1].alternativa2+"'  >"+listaDomande[ind-1].alternativa2+"</input></td>";
                    str += "</tr>";
                    str += "<tr>";
                    if(risposteDate[indiceDomanda] == 3)
                        str += "<td><input type='checkbox' id='3alternativaCorretta' name='3alternativaCorretta' onclick='javascript:segnaRisposta("+indiceDomanda+", 3);document.getElementById(\"1alternativaCorretta\").checked=false; document.getElementById(\"2alternativaCorretta\").checked=false; document.getElementById(\"4alternativaCorretta\").checked=false;' value='"+listaDomande[ind-1].alternativa3+"' checked >"+listaDomande[ind-1].alternativa3+"</input></td>";
                    else
                        str += "<td><input type='checkbox' id='3alternativaCorretta' name='3alternativaCorretta' onclick='javascript:segnaRisposta("+indiceDomanda+", 3);document.getElementById(\"1alternativaCorretta\").checked=false; document.getElementById(\"2alternativaCorretta\").checked=false; document.getElementById(\"4alternativaCorretta\").checked=false;' value='"+listaDomande[ind-1].alternativa3+"' >"+listaDomande[ind-1].alternativa3+"</input></td>";
                    str += "</tr>";
                    str += "<tr>";
                    if(risposteDate[indiceDomanda] == 4)
                        str += "<td><input type='checkbox' id='4alternativaCorretta' name='4alternativaCorretta' onclick='javascript:segnaRisposta("+indiceDomanda+", 4);document.getElementById(\"1alternativaCorretta\").checked=false; document.getElementById(\"2alternativaCorretta\").checked=false; document.getElementById(\"3alternativaCorretta\").checked=false;' value='"+listaDomande[ind-1].alternativa4+"' checked >"+listaDomande[ind-1].alternativa4+"</input></td>";
                    else
                        str += "<td><input type='checkbox' id='4alternativaCorretta' name='4alternativaCorretta' onclick='javascript:segnaRisposta("+indiceDomanda+", 4);document.getElementById(\"1alternativaCorretta\").checked=false; document.getElementById(\"2alternativaCorretta\").checked=false; document.getElementById(\"3alternativaCorretta\").checked=false;' value='"+listaDomande[ind-1].alternativa4+"'  >"+listaDomande[ind-1].alternativa4+"</input></td>";
                    str += "</tr>";

                    str += "</table></div>";
                    document.getElementById('risMult').innerHTML=str;
                    document.getElementById('rispostaDomandaDiv').innerHTML="";
                }


            }

            function segnaRisposta(ind, risp)
            {
                if(risp==1)
                    risposteDate[ind]='1';//listaDomande[ind].alternativa1;
                else if(risp==2)
                    risposteDate[ind]='2';//listaDomande[ind].alternativa2;
                else if(risp==3)
                    risposteDate[ind]='3';//listaDomande[ind].alternativa3;
                else if(risp==4)
                    risposteDate[ind]='4';//listaDomande[ind].alternativa4;
                else
                    risposteDate[ind]=risp;
            }

            function manageWindow()
            {
                var timeBox = new GlassBox();
                timeBox.init( 'timeBox', '350px', '110px', 'hidden','',true, false);
                timeBox.apos('100px', '10px');
                timeBox.appear();

                var DomandeBox = new GlassBox();
                DomandeBox.init( 'DomandeBox', '1150px', '610px', 'hidden','',true, false);
                DomandeBox.apos('50px', '250px');
                DomandeBox.appear();

                var listaDomandeBox = new GlassBox();
                listaDomandeBox.init( 'listaDomandeBox', '1150px', '130px', 'hidden','',true, false);
                listaDomandeBox.apos( '50px', '120px' );

                listaDomandeBox.appear();




            }
            /******* SCRIPT PER IL TEMPO ********/

            function logRemainTime()
            {
                var str = "";
                if(hours<10)
                {
                    if(seconds<10)
                    {
                        if(minutes<10)
                            str = "0"+hours+" : 0"+minutes+" : "+"0"+seconds+" ";
                        else
                            str = "0"+hours+" : "+minutes+" : "+"0"+seconds+" ";
                    }
                    else
                    {
                        if(minutes<10)
                            str = "0"+hours+" : 0"+minutes+" : "+seconds+" ";
                        else
                            str = "0"+hours+" : "+minutes+" : "+seconds+" ";
                    }

                }
                else
                {
                    if(seconds<10)
                    {
                        if(minutes<10)
                            str = hours+" : 0"+minutes+" : "+"0"+seconds+" ";
                        else
                            str = hours+" : "+minutes+" : "+"0"+seconds+" ";
                    }
                    else
                    {
                        if(minutes<10)
                            str = hours+" : 0"+minutes+" : "+seconds+" ";
                        else
                            str = hours+" : "+minutes+" : "+seconds+" ";
                    }

                }
                return str;
            }

            var hours =<?= $test->getOre(); ?>;
            var minutes = <?= $test->getMinuti() ; ?>;
            var seconds=0;

            function setCountDown()
            {
                seconds--;
                if (seconds < 0){
                    minutes--;
                    seconds = 59
                }
                if (minutes < 0){
                    hours--;
                    minutes = 59
                }
                if (hours < 0){
                    days=0;
                    hours = 23
                }

                if(hours==0 && minutes==0 && seconds == 0)
                    finishTest();


                if(hours==0 && minutes <=15)
                    document.getElementById("timeBoxContent").style.color='yellow';
                if(hours==0 && minutes <=5)
                    document.getElementById("timeBoxContent").style.color='red';

                document.getElementById("timeBoxContent").innerHTML = "Ti restano : " +logRemainTime();
                setTimeout ( "setCountDown()", 1000 );
            }





            /******* FINE SCRIPT PER IL TEMPO ******/
            var listaDomande = new Array(<?= count($listaDomande) ?>);
            for(s=0;s<listaDomande.length;s++)
                listaDomande[s]="";
            var risposteDate = new Array(<?= count($listaDomande) ?>);
            for(s=0;s<risposteDate.length;s++)
            risposteDate[s]="";



            function Domanda(codiceDomanda, testoDomanda, tipologia, alternativa1, alternativa2, alternativa3, alternativa4)
            {
                this.codiceDomanda = codiceDomanda;
                this.testoDomanda = testoDomanda;
                this.tipologia = tipologia;
                this.alternativa1 = alternativa1;
                this.alternativa2 = alternativa2;
                this.alternativa3 = alternativa3;
                this.alternativa4 = alternativa4;
            }

            Domanda.prototype={
                codiceDomanda : "",
                testoDomanda : "",
                tipologia : "",
                alternativa1 : "",
                alternativa2 : "",
                alternativa3 : "",
                alternativa4 : "",


                getTestoDomanda : function(){
                    return this.testoDomanda;
                },
                getTipologia : function(){
                    return this.tipoloiga;
                },
                getAlternativa1 : function(){
                    return this.alternativa1;
                },
                getAlternariva2 : function(){
                    return this.alternativa2;
                },
                getAlternativa3 : function(){
                    return this.alternativa3;
                },
                getAlternativa4 : function(){
                    return this.alternativa4;
                }
            }

            function creaDomande()
            {
                var ind = 0;
<?for($i=0;$i<count($listaDomande); $i++)
{
    $domanda = TestDataManager::getInstance()->getDomanda($connection, $listaDomande[$i]);
    $risposte = TestDataManager::getInstance()->getRispostaCorretta($connection, $listaDomande[$i], $domanda->getTipologia());
    if($domanda->getTipologia()=='1')
    {
        ?>

                newDomanda=new Domanda(<?= $domanda->getCodiceDomanda()?>, "<?= $domanda->getTestoDomanda()?>",
                "<?= $domanda->getTipologia()?>",
                "",
                "",
                "",
                "");
        <?}
    else
    {

        $seedAlternative = TestDataManager::getInstance()->getSeedAlternative($connection, $codiceTest, $codiceStudente, $domanda->getCodiceDomanda());
        $tmpSeed = explode("-", $seedAlternative);
        $tmpSeedV = array(4);
        for($u=0;$u<count($tmpSeed);$u++)
        {
            if($tmpSeed[$u]=='1')
                $tmpSeedV[$u]=$domanda->getRisposta1();
            if($tmpSeed[$u]=='2')
                $tmpSeedV[$u]=$domanda->getRisposta2();
            if($tmpSeed[$u]=='3')
                $tmpSeedV[$u]=$domanda->getRisposta3();
            if($tmpSeed[$u]=='4')
                $tmpSeedV[$u]=$domanda->getRisposta4();
        }
        ?>

                newDomanda=new Domanda(<?= $domanda->getCodiceDomanda()?>, "<?= $domanda->getTestoDomanda()?>",
                "<?= $domanda->getTipologia()?>",
                "<?= $tmpSeedV[0] ?>",
                "<?= $tmpSeedV[1] ?>",
                "<?= $tmpSeedV[2] ?>",
                "<?= $tmpSeedV[3] ?>");



        <?}//end else?>
                //                var indiceCausale;
                //
                //                var start=true;
                //                while(start)
                //                {
                //                    var seed=listaDomande.length-1;
                //                    indiceCausale = Math.round(seed*Math.random());
                //                    //                                    alert("indice casul : "+ indiceCausale);
                //                    if (listaDomande[indiceCausale]=="")
                //                    {
                //                        start=false;
                //                        //                    alert("inserisco domanda " + newDomanda.codiceDomanda + " in pos : "+ indiceCausale);
                //                        listaDomande[indiceCausale]=newDomanda;
                //                    }
                //                }
                listaDomande[indiceDomanda]=newDomanda;
                indiceDomanda++;
                //ind++;
    <?} //end for?>
            //                                    for(k=0;k<listaDomande.length;k++)
            //                                    {
            //                                        alert("codice " + listaDomande[k].codiceDomanda + " testo : " +listaDomande[k].testoDomanda);
            //
            //                                  }
            manageWindow();

            document.getElementById("timeBoxContent").innerHTML ="Hai a disposizione : " +logRemainTime();

        }


        function xXMLHttpRequest()
        {

            var client = null;
            if (window.XMLHttpRequest)
            {
                client=new XMLHttpRequest();
            }
            // code for IE
            else if (window.ActiveXObject)
            {
                client=new ActiveXObject("Microsoft.XMLHTTP");
            }

            return client;
        }

        function handler()
        {
            if(this.readyState == 4 && this.status == 200) {
                // alert(this.responseText);
                location.href="endTest.html";

            } else if (this.readyState == 4 && this.status != 200) {
                // fetched the wrong page or network error...
                alert("error this.status : " + this.responseText);

            }
        }

        function sendRisposte()
        {

            var client = xXMLHttpRequest();
            client.onreadystatechange = handler;

            var codiceTest = <?= $codiceTest ?>;
            var codiceStudente = <?= $codiceStudente ?>;

            var param = "operation=sendResults&codiceTest="+ codiceTest +
                "&codiceStudente="+codiceStudente +
                "&numeroDomande="+listaDomande.length +
                "&chiaveTest=<?= $chiaveTest ?>";
            var i = 0;
            for(i=0;i<listaDomande.length;i++)
                param += "&codiceDomanda"+i+"="+listaDomande[i].codiceDomanda +
                "&rispostaData"+i+"="+risposteDate[i];

            client.open("POST", "../testManaging/newTestListener.php", false);
            client.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

            client.send(param);

            location.href='endTest.html';

        }

        function lockTest()
        {

            var client = xXMLHttpRequest();

            var codiceTest = <?= $codiceTest ?>;
            var codiceStudente = <?= $codiceStudente ?>;

            var param = "operation=sendResults&codiceTest="+ codiceTest +
                "&codiceStudente="+codiceStudente +
                "&numeroDomande="+listaDomande.length +
                "&chiaveTest=<?= $chiaveTest ?>";
            var i = 0;
            for(i=0;i<listaDomande.length;i++)
                param += "&codiceDomanda"+i+"="+listaDomande[i].codiceDomanda +
                "&rispostaData"+i+"="+risposteDate[i];

            client.open("POST", "../testManaging/newTestListener.php", true);
            client.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

            client.send(param);


        }


        function finishTest()
        {
            hours=0;
            minutes=0;
            seconds=0;
            days=0;

            sendRisposte();

            //            var i=0;
            //            var str ="";
            //            for(i=0;i<risposteDate.length;i++)
            //            str += "codi domanda " + listaDomande[i].codiceDomanda+" risp " + i +" = " +risposteDate[i];
            //            alert (str);

        }

        function checkIfTestExecuted()
        {
            var client = xXMLHttpRequest();
            client.onreadystatechange = function()
            {
                //                alert("state : " + this.readyState +" status " + this.status);
                if(this.readyState == 4 && this.status == 200)
                {
                    //                    alert("resp " + this.responseText);
                    if(this.responseText=='err')
                        location.href="endTest.html";
                }
            }

            var param = "codiceStudente=<?= $codiceStudente ?>" +
                "&chiaveTest=<?= $chiaveTest ?>";

            client.open("POST", "checkIfTestIsExecuted.php", true);
            client.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

            client.send(param);
        }

        function startTest()
        {
            var str="";
            str="<center><table width='100%' border='1'><tr>";
            var ind =1;
            var k=0;
            checkIfTestExecuted();
            lockTest();
            for(k=0;k<listaDomande.length;k++)
            {

                str += "<div id='domanda"+ind+"' ><td id='testoDomanda"+ind+"' onclick='javascript:loadDomanda("+ind+");' onmouseout = 'javascript:mouseout("+ind+")' onmouseover='javascript:mouseover("+ind+")' disabled> " +ind+"</td></div>";
                ind++;
            }
            str+="</tr></table></center>";
            document.getElementById('listaDomandeBoxCont').innerHTML=str;

            document.getElementById('startBut').onclick="";
            document.getElementById('startBut').style.display="none";
            document.getElementById('finishBut').style.display="block";
            setCountDown();
        }

        </script>
    </head>
    <body onload="javascript :creaDomande()">
        <img id="startBut" src='../images/icons/PNG/Clock.png' height='60' width='60' title='Start' border='0' onclick='javascript:startTest();'/>
        <img id="finishBut" src='../images/icons/PNG/logout.png' height='60' width='60' title='Finish test' border='0' onclick='javascript:finishTest();' style="display: none"/>
        <center>
            <div id="timeBox">
                <div id="timeBoxContent">
                </div>
            </div>
        </center>
        <div id="DomandeBox">
            <div id="DomandeBoxContent">
                <div id="testoDomandaDiv"></div>
                <center>
                    <div id="rispostaDomandaDiv">
                    </div>
                </center>
                <div id="risMult"></div>
            </div>
        </div>
        <div id="listaDomandeBox">
            <div id="listaDomandeBoxCont">

            </div>
        </div>

    </body>
</html>
